Matrix聊天快速指南
==================

**注：此文已经过时，请等待此文更新**

矩阵一入深似海，从此 `电幕 <https://zh.wikipedia.org/wiki/%E7%94%B5%E5%B9%95>`__ 是路人。


Matrix 和其他通信服务的比较
--------------------------------

关于 Matrix 的介绍，可以参考我在2017年软件自由日上的演讲： https://matrixim.cc/sfd2017-matrix.pdf

为什么不用某些通信服务：

- 客户端必须是 `自由软件 <https://fsfs-zh.readthedocs.io/zh/latest/free-sw/#_2>`__ ，确保该软件不容易做不正确的事，于是排除微信、QQ、Skype、Discord等软件，有报告称，某些私有聊天软件会配合政府监控用户：

    + `微信一app两制 <https://citizenlab.org/2016/11/wechat-china-censorship-one-app-two-systems/>`__
    + `微软，棱镜门和NSA <https://www.theguardian.com/world/2013/jul/11/microsoft-nsa-collaboration-user-data>`__

- 服务端也需要是自由软件，从而不会因为集中在一个服务器而被封锁。Telegram 在多个国家被封锁，说明了我们需要一个可以自己架设服务器的通信服务。此外，Telegram 需要用手机号注册，在国内手机号实名认证的状况下，对隐私也是一个威胁。
- 在上一点的基础上，不同服务器间需要能互通，即使用邦联式(federation)聊天协议，电子邮件、XMPP 和 Matrix 都是这样的协议。
- 支持端到端加密，最好是协议自身支持

Matrix 就是一个满足以上特性的协议。

其他通信服务：

- IRC 和 Rocket.Chat, Mattermost 等协作平台：有自由的客户端和服务端，可以自己架设服务器，但是它们不是邦联式协议，不同服务器的用户之间无法通信。
- `XMPP <https://xmpp.org>`__: 一个经典的通信协议，核心功能很小，扩展性很强。在安全方面，有XEP标准支持OTR端到端加密，支持多端加密的OMEMO也已经在一些客户端中启用。近些年来，XMPP 协议有很大的进步，但是各客户端和服务器对 XMPP 扩展的支持不太统一。
- `Tox <https://tox.chat>`__, `GNU Ring <https://ring.cx>`__, bitmessage 等 P2P 协议：比邦联式更加去中心化，但是缺乏离线消息和单账户多设备支持

最简单的 Matrix 使用方式：使用在线的 Riot web
----------------------------------------------------

首先，Matrix是一个去中心化的网络，我们需要先选择一个服务器。Hello Matrix 提供了一份 `非官方 Matrix 服务器列表 <https://www.hello-matrix.net/public_servers.php>`__ 。

注意有的服务器注册时需要填写 Google reCAPTCHA, 如果上 Google 不方便，可以选择一个不需要 reCAPTCHA 注册的服务器，如本文作者的 matrixim.cc.

以下以 matrixim.cc 为例介绍如何用在线的 Riot web 使用 Matrix.


注册和登录
~~~~~~~~~~~

打开 https://matrixim.cc 首页，可以看到 *Chat with Riot now!* 链接，点击进去可以进入 Riot 的界面 https://chat.matrixim.cc. 点击 *Create an account* 便可创建账户，注意只需要填写用户名和密码，不需要填写邮箱地址和手机号。创建账户之后就可以登录了。

为了在其他客户端中方便地使用 Matrix，我们要记下服务器的链接和自己的 Matrix ID.

我们先看 Riot web 的左边栏，最下面有 5 个按钮，用鼠标光标指向这些按钮可以看到它们的说明。

.. image:: riot-left-panel.png

我们点击右下角的设置按钮，可以看到设置界面，把设置界面拉到最下方，可以看到服务器地址和 Matrix ID.

.. image:: settings.png

从上图可以看到，我的 Matrix ID 是 @vimacs:matrixim.cc, 所用服务器的 URL 是 https://matrixim.cc.

- Matrix ID 是 Matrix 网络上一个用户的标识，类似于电子邮件的地址，要联系一个 Matrix 用户，要使用 Matrix ID
- 服务器 URL 是登录时使用的服务器地址，如果你用 Riot 的 Android 或 iOS 版本，你需要在登录时选择用自定义服务器，在 Home server URL 中填写这个地址

开始聊天
~~~~~~~~~

登录后，可以看到 Riot web 的首页，为了方便，我在下图中标出常用的功能。

.. image:: riot-home.png

点击左下角的目录图标，可以看到你用的服务器中的公开聊天室列表。你也可以直接填写要加入的房间，如``#lcpu:matrixim.cc``，然后回车就能加入。

要和其他人私聊，可以点左下角的Start chat(图案是一个人)，填写你要联络的人的 Matrix ID.

你也可以点击图案是加号的按钮，创建一个房间，然后拉其他人进来。

于是你已经学会了使用 Matrix 协议进行通信了。


结语
----

以上讲解了怎样用最简单的方式使用 Matrix，然而 Matrix 是个很强大的协议，客户端软件也不只有 Riot 一个。

要想更熟练地使用 Matrix 聊天，你还可以学习：

- 使用 Riot web 的离线版本，以及 Riot 的 Android, iOS 端
- 使用其他客户端软件，如 `nheko <https://github.com/mujx/nheko>`__
- 使用端到端加密，保护你的隐私
- 如果有服务器资源，可以自己架设服务器
